package main

import "fmt"

// 结构体LinkNode有两个字段，一个字段存放数据Data，一个字段指向下一个节点
// 像这种从一个数据节点指向下一个数据节点的结构，都可以叫做链表
// 有这样一些链表
// 单链表，就是说链表是单向的，像这种结构一样，可以一直往下找，单向的，不能回头
// 双链表  就是每个节点既可以找到它之前的节点，也可以找到之后的节点，是双向的
// 循环链表 就是它一直往下找数据姐弟啊，最后回到了自己那个节点，形成了一个回路。
// 循环单链表和循环双链表的区别就在于，一个只能一个方向走，一个两个方向都可以走
type LinkNode struct {
	Data     int64
	NextNode *LinkNode
}

func main() {
	//新的节点
	node := new(LinkNode)
	node.Data = 2

	//新的节点
	node1 := new(LinkNode)
	node1.Data = 3
	node.NextNode = node1 //讲node1链接到node节点上

	// 新的节点
	node2 := new(LinkNode)
	node2.Data = 4
	node1.NextNode = node2

	//新的节点
	node3 := new(LinkNode)
	node3.Data = 5
	node2.NextNode = node3

	//顺序打印数据
	nowNode := node
	for {
		if nowNode != nil {
			//打印节点
			fmt.Println(nowNode.Data)
			//获取下一个节点
			nowNode = nowNode.NextNode
			continue
		}
		break
	}
}
